iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0

今天要說的是信用卡分期付款,分期付款也是信用卡付款的一種,
但我們需要透過結構上的改動以符合分期資料的顯示,
由於分期主要是將一個訂單金額分成多次小金額進行付款(扣款),
所以我們主要在於新增欄位去紀錄相關資訊,
看一下結構,

Schema::create('payment', function (Blueprint $table) {
    $table->string('id', 30)->comment('同訂單id');
    $table->string('payment_id', 30)->comment('金流單id');
    $table->string('type', 20)->comment('付款類型'); //credit, atm
    $table->integer('period')->default(0)->comment('分期期數');
    $table->string('status', 30)->default('unpaid')->comment('付款狀態');
    $table->dateTime('expired_at')->nullable()->comment('付款截止時間');
    $table->dateTime('paid_at')->nullable()->comment('付款時間');
    $table->text('info')->nullable(); // 付款資訊物件(ATM帳號/超商代碼/超商條碼)
    $table->float('amount')->default(0); // 金額
    $table->float('first_period_price')->default(0); // 首期金額
    $table->float('each_period_price')->default(0); // 每期金額
    $table->float('fee')->default(0); // 手續費
    $table->primary(['id']);
});

這次新增了幾個欄位來紀錄分期資訊,
period 分期期數
first_period_price 首期金額
each_period_price 剩餘每期金額

為什麼要有首期金額跟每期金額是因為,總金額不一定有辦法整除分期,
通常會在第一次把餘數加上去,所以這邊需要額外開一個欄位來做紀錄,
由於分期付款通常是由銀行端實做,如果第三方金流每次扣款都會通知的話,
還可以新增一個current_period當前期數欄位,讓使用者可以直接再網站上查看期數,

$table->integer('current_period')->default(1)->comment('當前期數');

至於type需不需要新增分期付款的選項,或者用type+period做判斷就看個人,
獨立的話在分析訂單的時候會比較方便一點,以上就是分期付款的內容拉,
講得很陽春,請大家見諒。


最後最後還有一件很重要的事情,
就是如果有談到退刷或者退款的時候,建議採用人工的方式,
並且開人工調整所需要的紀錄欄位(user_id之類的)來處理,
信用卡的東西牽扯到退款是非常麻煩的,流程非常複雜。


上一篇
Day26 訂單 -- 重新付款2
下一篇
Day28 訂單 -- 定期定額
系列文
掌握訂單與線上金流的剪不斷理還亂30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言